Try-Catch-Finally Structure
কটলিনে Try-Catch-Finally স্ট্রাকচার ব্যবহার করে আপনি এক্সেপশন হ্যান্ডলিং করতে পারেন। এটি আপনার প্রোগ্রামের স্থিতিশীলতা বৃদ্ধি করে এবং runtime error-গুলোর জন্য একটি নিরাপদ উপায় প্রদান করে। নিচে Try-Catch-Finally স্ট্রাকচার সম্পর্কে বিস্তারিত আলোচনা করা হলো।
১. Try Block
Try block হলো এমন একটি ব্লক যেখানে আপনি কোড লিখবেন যা একটি এক্সেপশন তৈরি করতে পারে। যদি try ব্লকের কোডে কোনো এক্সেপশন ঘটে, তাহলে সেই এক্সেপশনটি catch ব্লকে ক্যাচ করা হয়।
উদাহরণ:
fun main() {
try {
val result = 10 / 0 // এটি একটি এক্সেপশন তৈরি করবে
println(result)
} catch (e: ArithmeticException) {
println("Caught an exception: ${e.message}")
}
}
ব্যাখ্যা:
- এখানে,
10 / 0কোডটি একটিArithmeticExceptionতৈরি করবে। catchব্লকে এই এক্সেপশনটি ক্যাচ করা হয়েছে এবং এর মেসেজ প্রিন্ট করা হয়েছে।
২. Catch Block
Catch block হলো সেই স্থান যেখানে আপনি এক্সেপশন হ্যান্ডলিং করেন। আপনি একাধিক catch ব্লকও ব্যবহার করতে পারেন বিভিন্ন ধরনের এক্সেপশনের জন্য।
উদাহরণ:
fun main() {
try {
val numbers = listOf(1, 2, 3)
println(numbers[5]) // এটি IndexOutOfBoundsException তৈরি করবে
} catch (e: IndexOutOfBoundsException) {
println("Caught an IndexOutOfBoundsException: ${e.message}")
} catch (e: Exception) {
println("Caught a general exception: ${e.message}")
}
}
ব্যাখ্যা:
- এখানে
catchব্লকগুলো ব্যবহার করে বিভিন্ন ধরনের এক্সেপশন হ্যান্ডলিং করা হয়েছে। প্রথমcatchব্লকটিIndexOutOfBoundsExceptionক্যাচ করবে এবং দ্বিতীয় ব্লকটি সাধারণException।
৩. Finally Block
Finally block হলো সেই ব্লক যেখানে আপনি কোড লিখবেন যা যেকোনো পরিস্থিতিতে এক্সিকিউট হবে, অর্থাৎ এক্সেপশন ঘটুক বা না ঘটুক। এটি সাধারণত ক্লিনআপ কোড (যেমন ফাইল বন্ধ করা, নেটওয়ার্ক সংযোগ বন্ধ করা) রাখতে ব্যবহৃত হয়।
উদাহরণ:
fun main() {
var resource: String? = null
try {
resource = "Resource opened"
println(resource)
val result = 10 / 0 // এটি এক্সেপশন তৈরি করবে
} catch (e: ArithmeticException) {
println("Caught an exception: ${e.message}")
} finally {
// Finally block will execute irrespective of exception
resource = null
println("Resource closed.")
}
}
ব্যাখ্যা:
- এখানে
finallyব্লকটি নিশ্চিত করে যেresourceঅবশ্যই বন্ধ বা রিসেট হবে, যদিওtryব্লকে এক্সেপশন ঘটে।
৪. Multiple Catch Blocks
একাধিক catch ব্লক ব্যবহার করে বিভিন্ন এক্সেপশন ধরার জন্য প্রয়োজনীয়।
উদাহরণ:
fun main() {
try {
val number = "abc".toInt() // NumberFormatException তৈরি করবে
} catch (e: NumberFormatException) {
println("Caught a NumberFormatException: ${e.message}")
} catch (e: Exception) {
println("Caught a general exception: ${e.message}")
}
}
ব্যাখ্যা:
- এখানে,
NumberFormatExceptionক্যাচ করা হচ্ছে এবং সাধারণExceptionক্যাচ ব্লক ব্যবহার করা হচ্ছে অন্য এক্সেপশনের জন্য।
উপসংহার
কটলিনে Try-Catch-Finally স্ট্রাকচার ব্যবহার করে আপনি সহজেই এক্সেপশন হ্যান্ডলিং করতে পারেন, যা প্রোগ্রামের স্থিতিশীলতা এবং সুরক্ষা বাড়ায়। try ব্লকে এমন কোড রাখুন যা এক্সেপশন তৈরি করতে পারে, catch ব্লকে এক্সেপশন হ্যান্ডলিং করুন এবং finally ব্লকে ক্লিনআপ কোড রাখুন।
Read more